package cn.itcast.tools;

import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.itcast.dto.WeatherDTO;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Component;

@Component
public class WeatherTools {

    @Tool(description = "根据城市ID查询天气信息")
    public WeatherDTO getWeather(String cityId) {

        //通过http请求获取天气信息，并且通过json数据解析为WeatherDto对象
        String url = "http://t.weather.itboy.net/api/weather/city/" + cityId;
        String data = HttpUtil.get(url);
        JSONObject jsonObject = JSONUtil.parseObj(data);

        //模拟返回天气信息
        return WeatherDTO.builder()
                .cityId(jsonObject.getByPath("cityInfo.citykey", String.class))//城市ID
                .city(jsonObject.getByPath("cityInfo.city", String.class))//城市名称
                .temperature(jsonObject.getByPath("data.wendu", String.class))//当前温度（单位：℃）
                .lowTemperature(jsonObject.getByPath("data.forecast[0].low", String.class))//低温（单位：℃）
                .highTemperature(jsonObject.getByPath("data.forecast[0].high", String.class))//高温（单位：℃）
                .date(jsonObject.getByPath("date", String.class))//数据日期（格式：YYYYMMDD）
                .quality(jsonObject.getByPath("data.quality", String.class))//空气质量指数
                .pm25(jsonObject.getByPath("data.pm25", Double.class))//PM2.5 浓度（单位：微克/立方米）
                .build();
    }
}
